/**
 * 
 */
package fr.gfi.agraf.utils;

import java.util.Random;

/**
 * Classe englobant les méthodes de génération
 * 
 * @author Fw
 * 
 */
public class GenerationUtils {

	/**
	 * Constructeur
	 */
	private GenerationUtils() {
		// Empty constructeur
	}

	/**
	 * Méthode pour générer un nouveau mot de passe. Renvoi une chaine contenant
	 * 0-9 a-z A-Z.
	 * 
	 * @param tailleMdp
	 *            le nombre de caracteres voulu pour le mot de passe
	 * @return le mot de passe généré
	 */
	public static String genererMdp(final int tailleMdp) {
		if (tailleMdp < 1) {
			throw new IllegalArgumentException("tailleMdp < 1: " + tailleMdp);
		}
		char[] symbols = null;
		final StringBuilder tmp = new StringBuilder();
		for (char ch = '0'; ch <= '9'; ++ch)
			tmp.append(ch);
		for (char ch = 'a'; ch <= 'z'; ++ch)
			tmp.append(ch);
		for (char ch = 'A'; ch <= 'Z'; ++ch)
			tmp.append(ch);
		symbols = tmp.toString().toCharArray();

		final Random random = new Random();
		final char[] buf = new char[tailleMdp];

		for (int i = 0; i < buf.length; ++i) {
			buf[i] = symbols[random.nextInt(symbols.length)];
		}
		return new String(buf);
	}

}
